
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>提升系统吞吐量的技术 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>提升系统吞吐量的技术 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">什么是系统吞吐量？通常使用哪些指标来衡量它？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">吞吐量指的是系统单位时间内可以处理的请求或任务的数量。它通常以每秒请求数（Requests Per Second，RPS）或者每秒事务数（Transactions Per Second，TPS）来衡量。</div>
          </div>
          <div class="card-source">来源: 1.1 吞吐量的定义</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">影响系统吞吐量的主要因素有哪些？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">影响吞吐量的主要因素包括四个方面：硬件资源（如CPU、内存、磁盘和网络）、软件架构（如负载均衡和缓存机制）、并发处理能力以及I/O瓶颈（如数据库查询和文件读写）。</div>
          </div>
          <div class="card-source">来源: 1.2 吞吐量的影响因素</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">为什么使用线程池（如ExecutorService）能够提升系统吞吐量？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">线程池通过复用线程来执行多个任务，避免了频繁创建和销毁线程所带来的开销，从而可以显著提高系统的吞吐量。</div>
          </div>
          <div class="card-source">来源: 2.1.1 使用线程池（ExecutorService）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Java中的`CompletableFuture`是如何通过异步处理来提升吞吐量的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`CompletableFuture`提供了一个高效的异步API，支持将多个异步操作组合成任务链。这使得程序在等待某个任务完成时可以继续处理其他任务，从而避免阻塞，让多个任务并行执行，提高系统吞吐量。</div>
          </div>
          <div class="card-source">来源: 2.2.2 使用`CompletableFuture`实现异步任务链</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在高并发场景下，消息队列（如RabbitMQ）是如何帮助系统提升吞吐量的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">消息队列通过将请求异步化来提升吞吐量。它将任务放入队列中，由消费者异步地进行消费，这样可以平滑地处理大量的请求，避免瞬间的请求洪峰对系统造成过大压力。</div>
          </div>
          <div class="card-source">来源: 2.5 使用消息队列异步处理请求</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在数据库优化方面，使用缓存技术（如Redis）为什么能提升系统吞吐量？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">使用缓存技术可以将热点数据存储在内存数据库（如Redis）中，从而减少对主数据库的查询次数。这有效减轻了数据库的负担，使得数据获取更快，极大地提升了系统吞吐量。</div>
          </div>
          <div class="card-source">来源: 2.3.1 使用缓存技术</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">架构</div>
          <div class="card-question">负载均衡技术是如何提高整个系统的吞吐能力的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">架构</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当单机无法满足需求时，负载均衡技术可以将请求分发到多台服务器上。通过这种请求分摊的方式，可以避免某台服务器过载，从而提高整个系统的处理能力和吞吐量。</div>
          </div>
          <div class="card-source">来源: 2.4.1 负载均衡</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">异步I/O操作（如Java NIO）如何帮助提升系统吞吐量？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">异步I/O允许程序在等待I/O操作（如文件读写或网络通信）完成时，继续执行其他任务。这种方式可以显著减少线程阻塞的时间，从而提升系统吞吐量。</div>
          </div>
          <div class="card-source">来源: 2.2.1 异步I/O操作</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">除了传统的同步通信，还有哪些现代通信协议可以用来提高客户端与服务端的通信效率和吞吐量？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">现代系统可以采用异步通信协议，如WebSocket和gRPC。这些协议能在客户端和服务端之间建立持久连接，从而提高通信效率，减少请求响应时间，进而提高吞吐量。</div>
          </div>
          <div class="card-source">来源: 2.6 服务端和客户端的异步通信</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
